#pragma once
#include <vtkArrowSource.h>
#include <vtkObject.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkVector.h>
#include <vtkAssembly.h>
#include <vtkFollower.h>

class vtkTipsCoordinate : public vtkObject
{
public:
    vtkTypeMacro(vtkTipsCoordinate, vtkObject);
    static vtkTipsCoordinate* New();
    vtkTipsCoordinate();
    void SetRenderer(vtkSmartPointer<vtkRenderer> renderer);
    void AddToRenderer();
    virtual ~vtkTipsCoordinate();

private:
    vtkSmartPointer<vtkRenderer> m_renderer;

    vtkSmartPointer<vtkAssembly> m_coordAsm;

    vtkSmartPointer<vtkActor> arrowActorX;
    vtkSmartPointer<vtkActor> arrowActorY;
    vtkSmartPointer<vtkActor> arrowActorZ;
    vtkSmartPointer<vtkFollower> arrowActorX_text;
    vtkSmartPointer<vtkFollower> arrowActorY_text;
    vtkSmartPointer<vtkFollower> arrowActorZ_text;
    vtkVector3d position{ 0, 0, 0 };
};